package edu.hawaii.duedates.book;

import java.io.Serializable;
import java.util.Calendar;

/**
 * This interface is implemented by all books. It defines accessor, mutator, and toString behaviors.
 * 
 * @author Ronn Reeves and Robin E. Raqueno
 */
public interface IBook extends Serializable {

  /**
   * Returns the due date for this book.
   * 
   * @return Date The due date for the book.
   */
  public Calendar getDueDate();

  /**
   * Returns the library the book is from.
   * 
   * @return Library The library the book is from.
   */
  public String getLibrary();

  /**
   * Returns the title of this book.
   * 
   * @return String The book title.
   */
  public String getTitle();

  /**
   * Sets the due date of this book.
   * 
   * @param dueDate The due date of the book.
   */
  public void setDueDate(Calendar dueDate);

  /**
   * Sets the library the book is from.
   * 
   * @param library The library the book is from.
   */
  public void setLibrary(String library);

  /**
   * Sets the title of this book.
   * 
   * @param title The book title.
   */
  public void setTitle(String title);

  /**
   * Returns the title of this book.
   * 
   * @return String The book title.
   */
  public String toString();
}